<?php

/*
 * Co dau thanh khong dau
 */

function stripText($string) {
    $from = array("à", "ả", "ã", "á", "ạ", "ă", "ằ", "ẳ", "ẵ", "ắ", "ặ", "â", "ầ", "ẩ", "ẫ", "ấ", "ậ", "đ", "è", "ẻ", "ẽ", "é", "ẹ", "ê", "ề", "ể", "ễ", "ế", "ệ", "ì", "ỉ", "ĩ", "í", "ị", "ò", "ỏ", "õ", "ó", "ọ", "ô", "ồ", "ổ", "ỗ", "ố", "ộ", "ơ", "ờ", "ở", "ỡ", "ớ", "ợ", "ù", "ủ", "ũ", "ú", "ụ", "ư", "ừ", "ử", "ữ", "ứ", "ự", "ỳ", "ỷ", "ỹ", "ý", "ỵ", "À", "Ả", "Ã", "Á", "Ạ", "Ă", "Ằ", "Ẳ", "Ẵ", "Ắ", "Ặ", "Â", "Ầ", "Ẩ", "Ẫ", "Ấ", "Ậ", "Đ", "È", "Ẻ", "Ẽ", "É", "Ẹ", "Ê", "Ề", "Ể", "Ễ", "Ế", "Ệ", "Ì", "Ỉ", "Ĩ", "Í", "Ị", "Ò", "Ỏ", "Õ", "Ó", "Ọ", "Ô", "Ồ", "Ổ", "Ỗ", "Ố", "Ộ", "Ơ", "Ờ", "Ở", "Ỡ", "Ớ", "Ợ", "Ù", "Ủ", "Ũ", "Ú", "Ụ", "Ư", "Ừ", "Ử", "Ữ", "Ứ", "Ự", "Ỳ", "Ỷ", "Ỹ", "Ý", "Ỵ");
    $to = array("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "d", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "i", "i", "i", "i", "i", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "y", "y", "y", "y", "y", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "D", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "I", "I", "I", "I", "I", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "Y", "Y", "Y", "Y", "Y");

    return str_replace($from, $to, $string);
}

function getThumbnailList($clipId) {
    $config = Vega_App::getInstance()->coreConfig;
    $thumbs = array();

    $baseDir = $config['static']['data_path'] . DS . $config['static']['video'] . storageSolutionEncode($clipId, true);
    $baseURL = $config['static']['data_url'] . $config['static']['video'] . storageSolutionEncode($clipId) . '/' . $clipId;

    for ($i = 0; $i <= 9; $i++) {
        $thumbnailDir = $baseDir . DS . $clipId . "-000" . $i . ".jpg";
        $thumbnailURL = "$baseURL/" . $clipId . "-000" . $i . ".jpg";
        $thumb['name'] = $clipId . "-000" . $i . ".jpg";
        $thumb['url'] = $thumbnailURL;

        $thumbs[] = $thumb;
    }

    return $thumbs;
}

function cleanUpSpecialChars($string) {
    //$string = preg_replace( array("`[^a-zA-Z0-9\$_+*'()]`i","`[-]+`") , "-", $string);
    $string = preg_replace(array("`\W`i", "`[-]+`"), "-", $string);
    return trim($string, '-');
}

function makeTitleUrl($string) {
    static $charMap = array(
"à" => "a", "ả" => "a", "ã" => "a", "á" => "a", "ạ" => "a", "ă" => "a", "ằ" => "a", "ẳ" => "a", "ẵ" => "a", "ắ" => "a", "ặ" => "a", "â" => "a", "ầ" => "a", "ẩ" => "a", "ẫ" => "a", "ấ" => "a", "ậ" => "a",
 "đ" => "d",
 "è" => "e", "ẻ" => "e", "ẽ" => "e", "é" => "e", "ẹ" => "e", "ê" => "e", "ề" => "e", "ể" => "e", "ễ" => "e", "ế" => "e", "ệ" => "e",
 "ì" => 'i', "ỉ" => 'i', "ĩ" => 'i', "í" => 'i', "ị" => 'i',
 "ò" => 'o', "ỏ" => 'o', "õ" => "o", "ó" => "o", "ọ" => "o", "ô" => "o", "ồ" => "o", "ổ" => "o", "ỗ" => "o", "ố" => "o", "ộ" => "o", "ơ" => "o", "ờ" => "o", "ở" => "o", "ỡ" => "o", "ớ" => "o", "ợ" => "o",
 "ù" => "u", "ủ" => "u", "ũ" => "u", "ú" => "u", "ụ" => "u", "ư" => "u", "ừ" => "u", "ử" => "u", "ữ" => "u", "ứ" => "u", "ự" => "u",
 "ỳ" => "y", "ỷ" => "y", "ỹ" => "y", "ý" => "y", "ỵ" => "y",
 "À" => "A", "Ả" => "A", "Ã" => "A", "Á" => "A", "Ạ" => "A", "Ă" => "A", "Ằ" => "A", "Ẳ" => "A", "Ẵ" => "A", "Ắ" => "A", "Ặ" => "A", "Â" => "A", "Ầ" => "A", "Ẩ" => "A", "Ẫ" => "A", "Ấ" => "A", "Ậ" => "A",
 "Đ" => "D",
 "È" => "E", "Ẻ" => "E", "Ẽ" => "E", "É" => "E", "Ẹ" => "E", "Ê" => "E", "Ề" => "E", "Ể" => "E", "Ễ" => "E", "Ế" => "E", "Ệ" => "E",
 "Ì" => "I", "Ỉ" => "I", "Ĩ" => "I", "Í" => "I", "Ị" => "I",
 "Ò" => "O", "Ỏ" => "O", "Õ" => "O", "Ó" => "O", "Ọ" => "O", "Ô" => "O", "Ồ" => "O", "Ổ" => "O", "Ỗ" => "O", "Ố" => "O", "Ộ" => "O", "Ơ" => "O", "Ờ" => "O", "Ở" => "O", "Ỡ" => "O", "Ớ" => "O", "Ợ" => "O",
 "Ù" => "U", "Ủ" => "U", "Ũ" => "U", "Ú" => "U", "Ụ" => "U", "Ư" => "U", "Ừ" => "U", "Ử" => "U", "Ữ" => "U", "Ứ" => "U", "Ự" => "U",
 "Ỳ" => "Y", "Ỷ" => "Y", "Ỹ" => "Y", "Ý" => "Y", "Ỵ" => "Y"
    );

    $string = strtr($string, $charMap);

    return cleanUpSpecialChars($string);
}

/* * **************************************************************
 * Function: copyAndResizeImage - Copy and Resize image file
 * @param String	- Name of file source
 * @param String	- Name of file dest
 * @param Integer	- Size of file dest in width
 * @param Integer	- Size of file dest in height
 * @return Bool		- True or False, true if success
 * ************************************************************** */

function copyAndResizeImage($fileSource, $fileDest, $newWidth=0, $newHeight=0) {
    if (!file_exists($fileSource)) {
        return false;
    }
    $sourceFileInfo = getimagesize($fileSource);
    $width = $sourceFileInfo[0];
    $height = $sourceFileInfo[1];
    $mime = $sourceFileInfo["mime"];

    if (!$newWidth)
        $newWidth = $width;
    if (!$newHeight)
        $newHeight = $height;

    $xR = $newWidth / $width;
    $yR = $newHeight / $height;
    if ($xR < $yR) {
        $newHeight = floor($height * $xR);
    } elseif ($xR > $yR) {
        $newWidth = floor($width * $yR);
    }

    $thumbnail = imagecreatetruecolor($newWidth, $newHeight);
    switch ($mime) {
        case "image/jpeg":
            $source = imagecreatefromjpeg($fileSource);
            break;
        case "image/gif":
            $source = imagecreatefromgif($fileSource);
            break;
        case "image/png":
            $source = imagecreatefrompng($fileSource);
            break;
    }

    // Resize
    if (!imagecopyresized($thumbnail, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height)) {
        return false;
    }

    // Output
    if (!imagejpeg($thumbnail, $fileDest))
        return false;
    if (!imagedestroy($source))
        return false;
    return true;
}

function changeClipThumbnail($clipID, $newThumbName) {
    $config = Vega_App::getInstance()->coreConfig;
    $baseDir = $baseDir = $config['static']['data_path'] . $config['static']['video'] . storageSolutionEncode($clipID, true);
    $fileSource = $baseDir . '/' . $clipID . '/' . $newThumbName;

    // File ảnh thumbnail khi vào trang admin
    $fileDest = $baseDir . '/' . $clipID . '.jpg';
    // File ảnh thumbnail khi play clip
    $fileDestLarge = $baseDir . '/' . $clipID . '_large.jpg';
    // File ảnh thumbnail khi truy cập wap
    $fileWapDest = $baseDir . '/' . $clipID . '_small.jpg';
    $wap_width = $config['video']['wap_thumb_width'];
    $wap_height = $config['video']['wap_thumb_height'];

    // Xoa file cu
    if (is_file($fileDest))
        unlink($fileDest);
    if (is_file($fileDestLarge))
        unlink($fileDestLarge);
    if (is_file($fileWapDest))
        unlink($fileWapDest);

    copyAndResizeImage($fileSource, $fileDest, 128, 96);
    copyAndResizeImage($fileSource, $fileDestLarge, 0, 0);
    copyAndResizeImage($fileSource, $fileWapDest, $wap_width, $wap_height);
}

/**
 * storageSolutionEncode: tao ra duong dan toi thu muc chua file theo mo hinh phan cap thu muc moi
 * @param integer : id cua doi tuong, dung de ma hoa thu muc
 * @return string : duong dan theo mo hinh luu tru du lieu moi
 * */
function storageSolutionEncode($id) {
    $step = 15; //so bit de ma hoa ten thu muc tren 1 cap
    $layer = 3; //so cap thu muc
    $max_bits = PHP_INT_SIZE * 8;
    $result = "";

    for ($i = $layer; $i > 0; $i--) {
        $shift = $step * $i;
        $layer_name = $shift <= $max_bits ? $id >> $shift : 0;

        $result .= "/" . $layer_name;
    }

    return $result;
}
